//node中的一个模块
const path=require('path');
module.exports={
    entry:'./src/main.js',
    output:{
        //__dirname node中的一个全局变量，代表当前目录的绝对路径
        path:path.resolve(__dirname,'dist'),
        filename:"bundle.js",
        //当涉及到URL或者文件输出/输入时，需要用到该路径
        publicPath:'dist/'
    },
    module:{
        rules:[
            //适配CSS文件
            {
                test:/\.css$/,
                //css-loader只负责将css文件进行加载
                //这里如果把style-loader放到css-loader右边，npm run build时会报错
                //因为使用多个loader时，是从右向左的
                //安装组件方式： npm install css-loader --save-dev
                use:['style-loader','css-loader']
            },
            //适配less文件
            {
                test:/\.less$/,
                //需要安装less-loader
                //npm install less-loader@4.1.0 --save-dev less@3.9.0
                use:['style-loader','css-loader','less-loader']
            },
            //适配图片
            {
                //npm install url-loader@1.1.2 --save-dev
                //npm install file-loader@3.0.1 --save-dev
                test:/\.(png|jpeg|gif|jpg)$/,
                use:[
                    {
                        loader:'url-loader',
                        options:{
                            //当文件大小小于Limit时，默认采用base64方式加载文件
                            //否则使用file-loader加载文件
                            limit:58192,
                            //img文件夹下.文件原本的名字.8位hash.文件原本的后缀名
                            //当文件大小大于limit时，此配置才会生效
                            name:'img/[name].[hash:8].[ext]'
                        }
                    }
                ]

            },
            //适配ES6转ES5
            {
                //npm install babel-core@6.26.3 babel-loader@7.1.5 babel-preset-es2015@6.24.1 --save-dev
                test: /\.js$/,
                exclude: /(node_modules|bower_components)/,
                use: {
                    loader: 'babel-loader'
                    //这里直接写presets会报错，需要将这部分代码放到.babelrc文件中
                    /*,
                    options: {
                        presets: ['babel/preset-env']
                    }*/
                }
            }
        ]
    }
};